home *** CD-ROM | disk | FTP | other *** search
/ SuperHack / SuperHack CD.bin / CODING / DELPHI / MATHSTR.ZIP / CALCDLG.PAS next >
Encoding:
Pascal/Delphi Source File  |  1996-05-27  |  4.6 KB  |  206 lines

  1. { Copyright 1996 Pierre Valade 
  2.   Principal unit for Calculator program 
  3.   Used to test TMathStr component for Delphi 2.0 }
  4.  
  5.  
  6. unit Calcdlg;
  7.  
  8. interface
  9.  
  10. uses
  11.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  12.   Forms, Dialogs, Buttons, StdCtrls, ExtCtrls, MathStr;
  13.  
  14. type
  15.   TMainForm = class(TForm)
  16.     ButtonPanel: TPanel;
  17.     InOutPanel: TPanel;
  18.     Input: TEdit;
  19.     Output: TEdit;
  20.     SB0: TSpeedButton;
  21.     SB1: TSpeedButton;
  22.     SB2: TSpeedButton;
  23.     SB3: TSpeedButton;
  24.     SB4: TSpeedButton;
  25.     SB5: TSpeedButton;
  26.     SB6: TSpeedButton;
  27.     SB7: TSpeedButton;
  28.     SB8: TSpeedButton;
  29.     SB9: TSpeedButton;
  30.     SBPoint: TSpeedButton;
  31.     SBAdd: TSpeedButton;
  32.     SBSub: TSpeedButton;
  33.     SBMult: TSpeedButton;
  34.     SBDiv: TSpeedButton;
  35.     SBe: TSpeedButton;
  36.     SBlog: TSpeedButton;
  37.     SBln: TSpeedButton;
  38.     SBOpenParen: TSpeedButton;
  39.     SBx2: TSpeedButton;
  40.     SBx3: TSpeedButton;
  41.     SBxy: TSpeedButton;
  42.     SBCloseParen: TSpeedButton;
  43.     SBtan: TSpeedButton;
  44.     SBcos: TSpeedButton;
  45.     SBsin: TSpeedButton;
  46.     SBPi: TSpeedButton;
  47.     SBclear: TSpeedButton;
  48.     SBCopy: TSpeedButton;
  49.     SBPaste: TSpeedButton;
  50.     SBDefine: TSpeedButton;
  51.     SBEqual: TSpeedButton;
  52.     SpeedButton1: TSpeedButton;
  53.     SBAbs: TSpeedButton;
  54.     MathStr1: TMathStr;
  55.     Clip: TEdit;
  56.     SBOpenSParen: TSpeedButton;
  57.     SBCloseSParen: TSpeedButton;
  58.     SBRoot: TSpeedButton;
  59.     Label1: TLabel;
  60.     Label2: TLabel;
  61.     procedure FormCreate(Sender: TObject);
  62.     procedure EditExpression(Sender: TObject);
  63.     procedure SBEqualClick(Sender: TObject);
  64.     procedure SBClearClick(Sender: TObject);
  65.     procedure SBCopyClick(Sender: TObject);
  66.     procedure SBPasteClick(Sender: TObject);
  67.     procedure SBAboutClick(Sender: TObject);
  68.   private
  69.     { Private declarations }
  70.   public
  71.     { Public declarations }
  72.     Expression: String;
  73.     root:integer;
  74.   end;
  75.  
  76. var
  77.   MainForm: TMainForm;
  78.  
  79. implementation
  80.  
  81. uses AboutDlg;
  82.  
  83. {$R *.DFM}
  84.  
  85. procedure TMainForm.FormCreate(Sender: TObject);
  86. begin
  87.    Expression := ''; 
  88.    root := 0;
  89. end;
  90.  
  91. procedure TMainForm.EditExpression(Sender: TObject);
  92. var 
  93.    ch: string;
  94. begin
  95.    if Sender = SB0 then
  96.       ch := '0'
  97.    else if Sender = SB1 then
  98.       ch := '1'
  99.    else if Sender = SB2 then
  100.       ch := '2'
  101.    else if Sender = SB3 then
  102.       ch := '3'
  103.    else if Sender = SB4 then
  104.       ch := '4'
  105.    else if Sender = SB5 then
  106.       ch := '5'
  107.    else if Sender = SB6 then
  108.       ch := '6'
  109.    else if Sender = SB7 then
  110.       ch := '7'
  111.    else if Sender = SB8 then
  112.       ch := '8'
  113.    else if Sender = SB9 then
  114.       ch := '9'
  115.    else if Sender = SBPoint then
  116.       ch := '.' 
  117.    else if Sender = SBAdd then
  118.       ch := '+'
  119.    else if Sender = SBSub then
  120.       ch := '-'
  121.    else if Sender = SBDiv then
  122.       ch := '/'
  123.    else if Sender = SBMult then
  124.       ch := '*'
  125.    else if Sender = SBAbs then
  126.       ch := '|'
  127.    else if Sender = SBsin then
  128.       ch := 'sin'
  129.    else if Sender = SBcos then
  130.       ch := 'cos'
  131.    else if Sender = SBtan then
  132.       ch := 'tan'
  133.    else if Sender = SBPi then
  134.       ch := 'p'
  135.    else if Sender = SBe then
  136.       ch := 'e'
  137.    else if Sender = SBln then
  138.       ch := 'ln'
  139.    else if Sender = SBlog then
  140.       ch := 'log'
  141.    else if Sender = SBxy then
  142.       ch := '^'
  143.    else if Sender = SBx2 then
  144.       ch := '▓'
  145.    else if Sender = SB3 then
  146.       ch := '│'
  147.    else if Sender = SBRoot then
  148.       begin
  149.       ch := '^(1/';
  150.       root := 1;
  151.       end
  152.    else if Sender = SBOpenSParen then
  153.       ch := '['
  154.    else if Sender = SBCloseSParen then
  155.       ch := ']'
  156.    else if Sender = SBOpenParen then
  157.       ch := '(' 
  158.    else if Sender = SBCloseParen then
  159.       ch := ')';
  160.  
  161.    Input.SelText := ch;
  162.    end;
  163.  
  164. procedure TMainForm.SBEqualClick(Sender: TObject);
  165. var
  166.    y: extended;
  167.    ch: String;
  168. begin
  169.    y := MathStr1.Evaluate(MathStr1.Analyse(Input.Text), 0);
  170.    if MathStr1.Status = 0 then
  171.       Output.Text := 'Error'
  172.    else
  173.       Output.Text := FloatToStr(y);
  174. end;
  175.  
  176. procedure TMainForm.SBClearClick(Sender: TObject);
  177. begin
  178.    Input.SelectAll;
  179.    Input.ClearSelection;
  180.    Output.ReadOnly := False;
  181.    Output.SelectAll;
  182.    Output.ClearSelection;
  183.    Output.ReadOnly := True;
  184. end;
  185.  
  186. procedure TMainForm.SBCopyClick(Sender: TObject);
  187. var
  188.    tmpstr: String;
  189. begin
  190.    Clip.Text := Input.Text + ' = ' + Output.Text;
  191.    Clip.SelectAll;
  192.    Clip.CopyToClipboard;
  193. end;
  194.  
  195. procedure TMainForm.SBPasteClick(Sender: TObject);
  196. begin
  197. Input.PasteFromClipboard;
  198. end;
  199.  
  200. procedure TMainForm.SBAboutClick(Sender: TObject);
  201. begin
  202.  AboutBox.ShowModal;
  203. end;
  204.  
  205. end.
  206.